Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Yarn NPM CLI types #8

Merged
merged 1 commit into from
Jun 3, 2024
Merged

Add support for Yarn NPM CLI types #8

merged 1 commit into from
Jun 3, 2024

Conversation

quinnturner
Copy link
Owner

No description provided.

@quinnturner quinnturner merged commit 4236ec6 into main Jun 3, 2024
@quinnturner quinnturner deleted the yarn-npm branch June 3, 2024 12:36
github-merge-queue bot pushed a commit to AmadeusITGroup/otter that referenced this pull request Jun 5, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@microsoft/tsdoc](https://tsdoc.org/)
([source](https://github.com/microsoft/tsdoc/tree/HEAD/tsdoc)) |
[`~0.14.1` ->
`~0.15.0`](https://renovatebot.com/diffs/npm/@microsoft%2ftsdoc/0.14.2/0.15.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@microsoft%2ftsdoc/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@microsoft%2ftsdoc/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@microsoft%2ftsdoc/0.14.2/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@microsoft%2ftsdoc/0.14.2/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/chrome)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome))
| [`^0.0.267` ->
`^0.0.268`](https://renovatebot.com/diffs/npm/@types%2fchrome/0.0.267/0.0.268)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fchrome/0.0.268?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fchrome/0.0.268?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fchrome/0.0.267/0.0.268?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fchrome/0.0.267/0.0.268?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [Azure/functions-action](https://github.com/Azure/functions-action)
| `v1.5.1` -> `v1.5.2` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/Azure%2ffunctions-action/v1.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/Azure%2ffunctions-action/v1.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/Azure%2ffunctions-action/v1.5.1/v1.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/Azure%2ffunctions-action/v1.5.1/v1.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [actions/checkout](https://github.com/actions/checkout) | `v4.1.4`
-> `v4.1.6` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/actions%2fcheckout/v4.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/actions%2fcheckout/v4.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/actions%2fcheckout/v4.1.4/v4.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/actions%2fcheckout/v4.1.4/v4.1.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [audit-types](https://github.com/quinnturner/audit-types) |
[`~0.5.6` ->
`~0.6.0`](https://renovatebot.com/diffs/npm/audit-types/0.5.6/0.6.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/audit-types/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/audit-types/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/audit-types/0.5.6/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/audit-types/0.5.6/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [audit-types](https://github.com/quinnturner/audit-types) |
[`~0.5.6` ->
`~0.6.0`](https://renovatebot.com/diffs/npm/audit-types/0.5.6/0.6.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/audit-types/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/audit-types/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/audit-types/0.5.6/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/audit-types/0.5.6/0.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [dorny/test-reporter](https://github.com/dorny/test-reporter) |
`v1.9.0` -> `v1.9.1` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/dorny%2ftest-reporter/v1.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/dorny%2ftest-reporter/v1.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/dorny%2ftest-reporter/v1.9.0/v1.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/dorny%2ftest-reporter/v1.9.0/v1.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [esbuild](https://github.com/evanw/esbuild) | [`~0.20.0` ->
`~0.21.0`](https://renovatebot.com/diffs/npm/esbuild/0.20.2/0.21.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.20.2/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.20.2/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [esbuild](https://github.com/evanw/esbuild) | [`~0.20.0` ->
`~0.21.0`](https://renovatebot.com/diffs/npm/esbuild/0.20.2/0.21.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.20.2/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.20.2/0.21.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [github/codeql-action](https://github.com/github/codeql-action) |
`v2.25.3` -> `v2.25.8` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/github%2fcodeql-action/v2.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/github%2fcodeql-action/v2.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/github%2fcodeql-action/v2.25.3/v2.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/github%2fcodeql-action/v2.25.3/v2.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [github/codeql-action](https://github.com/github/codeql-action) |
`v3.25.3` -> `v3.25.8` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/github%2fcodeql-action/v3.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/github%2fcodeql-action/v3.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/github%2fcodeql-action/v3.25.3/v3.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/github%2fcodeql-action/v3.25.3/v3.25.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [ossf/scorecard-action](https://github.com/ossf/scorecard-action) |
`v2.3.1` -> `v2.3.3` |
[![age](https://developer.mend.io/api/mc/badges/age/github-tags/ossf%2fscorecard-action/v2.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/ossf%2fscorecard-action/v2.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/ossf%2fscorecard-action/v2.3.1/v2.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/ossf%2fscorecard-action/v2.3.1/v2.3.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| action | patch |
| [sass](https://github.com/sass/dart-sass) | [`~1.76.0` ->
`~1.77.0`](https://renovatebot.com/diffs/npm/sass/1.76.0/1.77.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/sass/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sass/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sass/1.76.0/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass/1.76.0/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| peerDependencies | minor |
| [sass](https://github.com/sass/dart-sass) | [`~1.76.0` ->
`~1.77.0`](https://renovatebot.com/diffs/npm/sass/1.76.0/1.77.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/sass/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sass/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sass/1.76.0/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass/1.76.0/1.77.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |

---

### Release Notes

<details>
<summary>microsoft/tsdoc (@&#8203;microsoft/tsdoc)</summary>

###
[`v0.15.0`](https://github.com/microsoft/tsdoc/blob/HEAD/tsdoc/CHANGELOG.md#0150)

Tue, 28 May 2024 21:34:19 GMT

##### Minor changes

-   Minor package cleanup.
-   Eliminate remaining const enums.

##### Patches

-   Update an image URL in the README.md file
-   Upgrade dev toolchain (Heft, Webpack, TypeScript)

</details>

<details>
<summary>Azure/functions-action (Azure/functions-action)</summary>

###
[`v1.5.2`](https://github.com/Azure/functions-action/releases/tag/v1.5.2)

[Compare
Source](https://github.com/Azure/functions-action/compare/v1.5.1...v1.5.2)

-   Updated from Node 16 to Node 20
-   Added support for Flex Consumption plan

</details>

<details>
<summary>actions/checkout (actions/checkout)</summary>

###
[`v4.1.6`](https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v416)

[Compare
Source](https://github.com/actions/checkout/compare/v4.1.5...v4.1.6)

- Check platform to set archive extension appropriately by
[@&#8203;cory-miller](https://github.com/cory-miller) in
[actions/checkout#1732

###
[`v4.1.5`](https://github.com/actions/checkout/releases/tag/v4.1.5)

[Compare
Source](https://github.com/actions/checkout/compare/v4.1.4...v4.1.5)

#### What's Changed

- Update NPM dependencies by
[@&#8203;cory-miller](https://github.com/cory-miller) in
[actions/checkout#1703
- Bump github/codeql-action from 2 to 3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[actions/checkout#1694
- Bump actions/setup-node from 1 to 4 by
[@&#8203;dependabot](https://github.com/dependabot) in
[actions/checkout#1696
- Bump actions/upload-artifact from 2 to 4 by
[@&#8203;dependabot](https://github.com/dependabot) in
[actions/checkout#1695
- README: Suggest `user.email` to be
`41898282+github-actions[bot]@&#8203;users.noreply.github.com` by
[@&#8203;cory-miller](https://github.com/cory-miller) in
[actions/checkout#1707

**Full Changelog**:
actions/checkout@v4.1.4...v4.1.5

</details>

<details>
<summary>quinnturner/audit-types (audit-types)</summary>

###
[`v0.6.2`](https://github.com/quinnturner/audit-types/releases/tag/v0.6.2)

[Compare
Source](https://github.com/quinnturner/audit-types/compare/v0.6.1...v0.6.2)

##### What's Changed

- fix: serialization of Yarn 4 by
[@&#8203;quinnturner](https://github.com/quinnturner) in
[quinnturner/audit-types#9

**Full Changelog**:
quinnturner/audit-types@v0.6.1...v0.6.2

###
[`v0.6.1`](https://github.com/quinnturner/audit-types/releases/tag/v0.6.1)

[Compare
Source](https://github.com/quinnturner/audit-types/compare/v0.6.0...v0.6.1)

##### What's Changed

- Add support for Yarn NPM CLI types by
[@&#8203;quinnturner](https://github.com/quinnturner) in
[quinnturner/audit-types#8

**Full Changelog**:
quinnturner/audit-types@v0.6.0...v0.6.1

###
[`v0.6.0`](https://github.com/quinnturner/audit-types/releases/tag/v0.6.0)

[Compare
Source](https://github.com/quinnturner/audit-types/compare/v0.5.6...v0.6.0)

##### What's Changed

- BREAKING: Change name of YarnBerry to Yarn2And3 by
[@&#8203;quinnturner](https://github.com/quinnturner) in
[quinnturner/audit-types#7

**Full Changelog**:
quinnturner/audit-types@v0.5.6...v0.6.0

</details>

<details>
<summary>dorny/test-reporter (dorny/test-reporter)</summary>

###
[`v1.9.1`](https://github.com/dorny/test-reporter/releases/tag/v1.9.1)

[Compare
Source](https://github.com/dorny/test-reporter/compare/v1.9.0...v1.9.1)

##### What's Changed

- fix: reporting wrong number of tests in Dart by
[@&#8203;dominicmh](https://github.com/dominicmh) in
[dorny/test-reporter#426
- Fix problematic retransmission of authentication token (alternative
solution) by [@&#8203;JojOatXGME](https://github.com/JojOatXGME) in
[dorny/test-reporter#438
- Update development dependencies by
[@&#8203;jozefizso](https://github.com/jozefizso) in
[dorny/test-reporter#442

##### New Contributors

- [@&#8203;dominicmh](https://github.com/dominicmh) made their first
contribution in
[dorny/test-reporter#426
- [@&#8203;JojOatXGME](https://github.com/JojOatXGME) made their first
contribution in
[dorny/test-reporter#438

**Full Changelog**:
dorny/test-reporter@v1.9.0...v1.9.1

</details>

<details>
<summary>evanw/esbuild (esbuild)</summary>

###
[`v0.21.4`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0214)

[Compare
Source](https://github.com/evanw/esbuild/compare/v0.21.3...v0.21.4)

- Update support for import assertions and import attributes in node
([#&#8203;3778](https://github.com/evanw/esbuild/issues/3778))

Import assertions (the `assert` keyword) have been removed from node
starting in v22.0.0. So esbuild will now strip them and generate a
warning with `--target=node22` or above:

▲ [WARNING] The "assert" keyword is not supported in the configured
target environment ("node22") [assert-to-with]

            example.mjs:1:40:
1 │ import json from "esbuild/package.json" assert { type: "json" }
                │                                         ~~~~~~
                ╵                                         with

          Did you mean to use "with" instead of "assert"?

Import attributes (the `with` keyword) have been backported to node 18
starting in v18.20.0. So esbuild will no longer strip them with
`--target=node18.N` if `N` is 20 or greater.

-   Fix `for await` transform when a label is present

This release fixes a bug where the `for await` transform, which wraps
the loop in a `try` statement, previously failed to also move the loop's
label into the `try` statement. This bug only affects code that uses
both of these features in combination. Here's an example of some
affected code:

    ```js
    // Original code
    async function test() {
      outer: for await (const x of [Promise.resolve([0, 1])]) {
        for (const y of x) if (y) break outer
        throw 'fail'
      }
    }

    // Old output (with --target=es6)
    function test() {
      return __async(this, null, function* () {
        outer: try {
for (var iter = __forAwait([Promise.resolve([0, 1])]), more, temp,
error; more = !(temp = yield iter.next()).done; more = false) {
            const x = temp.value;
            for (const y of x) if (y) break outer;
            throw "fail";
          }
        } catch (temp) {
          error = [temp];
        } finally {
          try {
            more && (temp = iter.return) && (yield temp.call(iter));
          } finally {
            if (error)
              throw error[0];
          }
        }
      });
    }

    // New output (with --target=es6)
    function test() {
      return __async(this, null, function* () {
        try {
outer: for (var iter = __forAwait([Promise.resolve([0, 1])]), more,
temp, error; more = !(temp = yield iter.next()).done; more = false) {
            const x = temp.value;
            for (const y of x) if (y) break outer;
            throw "fail";
          }
        } catch (temp) {
          error = [temp];
        } finally {
          try {
            more && (temp = iter.return) && (yield temp.call(iter));
          } finally {
            if (error)
              throw error[0];
          }
        }
      });
    }
    ```

- Do additional constant folding after cross-module enum inlining
([#&#8203;3416](https://github.com/evanw/esbuild/issues/3416),
[#&#8203;3425](https://github.com/evanw/esbuild/issues/3425))

This release adds a few more cases where esbuild does constant folding
after cross-module enum inlining.

    ```ts
    // Original code: enum.ts
    export enum Platform {
      WINDOWS = 'windows',
      MACOS = 'macos',
      LINUX = 'linux',
    }

    // Original code: main.ts
    import { Platform } from './enum';
    declare const PLATFORM: string;
    export function logPlatform() {
      if (PLATFORM == Platform.WINDOWS) console.log('Windows');
      else if (PLATFORM == Platform.MACOS) console.log('macOS');
      else if (PLATFORM == Platform.LINUX) console.log('Linux');
      else console.log('Other');
    }

// Old output (with --bundle '--define:PLATFORM="macos"' --minify
--format=esm)
function
n(){"windows"=="macos"?console.log("Windows"):"macos"=="macos"?console.log("macOS"):"linux"=="macos"?console.log("Linux"):console.log("Other")}export{n
as logPlatform};

// New output (with --bundle '--define:PLATFORM="macos"' --minify
--format=esm)
    function n(){console.log("macOS")}export{n as logPlatform};
    ```

- Pass import attributes to on-resolve plugins
([#&#8203;3384](https://github.com/evanw/esbuild/issues/3384),
[#&#8203;3639](https://github.com/evanw/esbuild/issues/3639),
[#&#8203;3646](https://github.com/evanw/esbuild/issues/3646))

With this release, on-resolve plugins will now have access to the import
attributes on the import via the `with` property of the arguments
object. This mirrors the `with` property of the arguments object that's
already passed to on-load plugins. In addition, you can now pass `with`
to the `resolve()` API call which will then forward that value on to all
relevant plugins. Here's an example of a plugin that can now be written:

    ```js
    const examplePlugin = {
      name: 'Example plugin',
      setup(build) {
        build.onResolve({ filter: /.*/ }, args => {
          if (args.with.type === 'external')
            return { external: true }
        })
      }
    }

    require('esbuild').build({
      stdin: {
        contents: `
          import foo from "./foo" with { type: "external" }
          foo()
        `,
      },
      bundle: true,
      format: 'esm',
      write: false,
      plugins: [examplePlugin],
    }).then(result => {
      console.log(result.outputFiles[0].text)
    })
    ```

- Formatting support for the `@position-try` rule
([#&#8203;3773](https://github.com/evanw/esbuild/issues/3773))

Chrome shipped this new CSS at-rule in version 125 as part of the [CSS
anchor positioning
API](https://developer.chrome.com/blog/anchor-positioning-api). With
this release, esbuild now knows to expect a declaration list inside of
the `@position-try` body block and will format it appropriately.

- Always allow internal string import and export aliases
([#&#8203;3343](https://github.com/evanw/esbuild/issues/3343))

Import and export names can be string literals in ES2022+. Previously
esbuild forbid any usage of these aliases when the target was below
ES2022. Starting with this release, esbuild will only forbid such usage
when the alias would otherwise end up in output as a string literal.
String literal aliases that are only used internally in the bundle and
are "compiled away" are no longer errors. This makes it possible to use
string literal aliases with esbuild's `inject` feature even when the
target is earlier than ES2022.

###
[`v0.21.3`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0213)

[Compare
Source](https://github.com/evanw/esbuild/compare/v0.21.2...v0.21.3)

- Implement the decorator metadata proposal
([#&#8203;3760](https://github.com/evanw/esbuild/issues/3760))

This release implements the [decorator metadata
proposal](https://github.com/tc39/proposal-decorator-metadata), which
is a sub-proposal of the [decorators
proposal](https://github.com/tc39/proposal-decorators). Microsoft
shipped the decorators proposal in [TypeScript
5.0](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#decorators)
and the decorator metadata proposal in [TypeScript
5.2](https://devblogs.microsoft.com/typescript/announcing-typescript-5-2/#decorator-metadata),
so it's important that esbuild also supports both of these features.
Here's a quick example:

    ```js
    // Shim the "Symbol.metadata" symbol
    Symbol.metadata ??= Symbol('Symbol.metadata')

    const track = (_, context) => {
      (context.metadata.names ||= []).push(context.name)
    }

    class Foo {
      @&#8203;track foo = 1
      @&#8203;track bar = 2
    }

    // Prints ["foo", "bar"]
    console.log(Foo[Symbol.metadata].names)
    ```

    **⚠️ WARNING ⚠️**

This proposal has been marked as "stage 3" which means "recommended for
implementation". However, it's still a work in progress and isn't a part
of JavaScript yet, so keep in mind that any code that uses JavaScript
decorator metadata may need to be updated as the feature continues to
evolve. If/when that happens, I will update esbuild's implementation to
match the specification. I will not be supporting old versions of the
specification.

- Fix bundled decorators in derived classes
([#&#8203;3768](https://github.com/evanw/esbuild/issues/3768))

In certain cases, bundling code that uses decorators in a derived class
with a class body that references its own class name could previously
generate code that crashes at run-time due to an incorrect variable
name. This problem has been fixed. Here is an example of code that was
compiled incorrectly before this fix:

    ```js
    class Foo extends Object {
      @&#8203;(x => x) foo() {
        return Foo
      }
    }
    console.log(new Foo().foo())
    ```

- Fix `tsconfig.json` files inside symlinked directories
([#&#8203;3767](https://github.com/evanw/esbuild/issues/3767))

This release fixes an issue with a scenario involving a `tsconfig.json`
file that `extends` another file from within a symlinked directory that
uses the `paths` feature. In that case, the implicit `baseURL` value
should be based on the real path (i.e. after expanding all symbolic
links) instead of the original path. This was already done for other
files that esbuild resolves but was not yet done for `tsconfig.json`
because it's special-cased (the regular path resolver can't be used
because the information inside `tsconfig.json` is involved in path
resolution). Note that this fix no longer applies if the
`--preserve-symlinks` setting is enabled.

###
[`v0.21.2`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0212)

[Compare
Source](https://github.com/evanw/esbuild/compare/v0.21.1...v0.21.2)

- Correct `this` in field and accessor decorators
([#&#8203;3761](https://github.com/evanw/esbuild/issues/3761))

This release changes the value of `this` in initializers for class field
and accessor decorators from the module-level `this` value to the
appropriate `this` value for the decorated element (either the class or
the instance). It was previously incorrect due to lack of test coverage.
Here's an example of a decorator that doesn't work without this change:

    ```js
    const dec = () => function() { this.bar = true }
    class Foo { @&#8203;dec static foo }
    console.log(Foo.bar) // Should be "true"
    ```

- Allow `es2023` as a target environment
([#&#8203;3762](https://github.com/evanw/esbuild/issues/3762))

TypeScript recently [added
`es2023`](https://github.com/microsoft/TypeScript/pull/58140) as a
compilation target, so esbuild now supports this too. There is no
difference between a target of `es2022` and `es2023` as far as esbuild
is concerned since the 2023 edition of JavaScript doesn't introduce any
new syntax features.

###
[`v0.21.1`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0211)

[Compare
Source](https://github.com/evanw/esbuild/compare/v0.21.0...v0.21.1)

- Fix a regression with `--keep-names`
([#&#8203;3756](https://github.com/evanw/esbuild/issues/3756))

The previous release introduced a regression with the `--keep-names`
setting and object literals with `get`/`set` accessor methods, in which
case the generated code contained syntax errors. This release fixes the
regression:

    ```js
    // Original code
    x = { get y() {} }

    // Output from version 0.21.0 (with --keep-names)
    x = { get y: /* @&#8203;__PURE__ */ __name(function() {
    }, "y") };

    // Output from this version (with --keep-names)
    x = { get y() {
    } };
    ```

###
[`v0.21.0`](https://github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0210)

[Compare
Source](https://github.com/evanw/esbuild/compare/v0.20.2...v0.21.0)

This release doesn't contain any deliberately-breaking changes. However,
it contains a very complex new feature and while all of esbuild's tests
pass, I would not be surprised if an important edge case turns out to be
broken. So I'm releasing this as a breaking change release to avoid
causing any trouble. As usual, make sure to test your code when you
upgrade.

- Implement the JavaScript decorators proposal
([#&#8203;104](https://github.com/evanw/esbuild/issues/104))

With this release, esbuild now contains an implementation of the
upcoming [JavaScript decorators
proposal](https://github.com/tc39/proposal-decorators). This is the
same feature that shipped in [TypeScript
5.0](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#decorators)
and has been highly-requested on esbuild's issue tracker. You can read
more about them in that blog post and in this other (now slightly
outdated) extensive blog post here:
https://2ality.com/2022/10/javascript-decorators.html. Here's a quick
example:

    ```js
    const log = (fn, context) => function() {
      console.log(`before ${context.name}`)
      const it = fn.apply(this, arguments)
      console.log(`after ${context.name}`)
      return it
    }

    class Foo {
      @&#8203;log static foo() {
        console.log('in foo')
      }
    }

    // Logs "before foo", "in foo", "after foo"
    Foo.foo()
    ```

Note that this feature is different than the existing "TypeScript
experimental decorators" feature that esbuild already implements. It
uses similar syntax but behaves very differently, and the two are not
compatible (although it's sometimes possible to write decorators that
work with both). TypeScript experimental decorators will still be
supported by esbuild going forward as they have been around for a long
time, are very widely used, and let you do certain things that are not
possible with JavaScript decorators (such as decorating function
parameters). By default esbuild will parse and transform JavaScript
decorators, but you can tell esbuild to parse and transform TypeScript
experimental decorators instead by setting `"experimentalDecorators":
true` in your `tsconfig.json` file.

Probably at least half of the work for this feature went into creating a
test suite that exercises many of the proposal's edge cases:
https://github.com/evanw/decorator-tests. It has given me a reasonable
level of confidence that esbuild's initial implementation is acceptable.
However, I don't have access to a significant sample of real code that
uses JavaScript decorators. If you're currently using JavaScript
decorators in a real code base, please try out esbuild's implementation
and let me know if anything seems off.

    **⚠️ WARNING ⚠️**

This proposal has been in the works for a very long time (work began
around 10 years ago in 2014) and it is finally getting close to becoming
part of the JavaScript language. However, it's still a work in progress
and isn't a part of JavaScript yet, so keep in mind that any code that
uses JavaScript decorators may need to be updated as the feature
continues to evolve. The decorators proposal is pretty close to its
final form but it can and likely will undergo some small behavioral
adjustments before it ends up becoming a part of the standard. If/when
that happens, I will update esbuild's implementation to match the
specification. I will not be supporting old versions of the
specification.

-   Optimize the generated code for private methods

Previously when lowering private methods for old browsers, esbuild would
generate one `WeakSet` for each private method. This mirrors similar
logic for generating one `WeakSet` for each private field. Using a
separate `WeakMap` for private fields is necessary as their assignment
can be observable:

    ```js
    let it
    class Bar {
      constructor() {
        it = this
      }
    }
    class Foo extends Bar {
      #x = 1
      #y = null.foo
      static check() {
        console.log(#x in it, #y in it)
      }
    }
    try { new Foo } catch {}
    Foo.check()
    ```

This prints `true false` because this partially-initialized instance has
`#x` but not `#y`. In other words, it's not true that all class
instances will always have all of their private fields. However, the
assignment of private methods to a class instance is not observable. In
other words, it's true that all class instances will always have all of
their private methods. This means esbuild can lower private methods into
code where all methods share a single `WeakSet`, which is smaller,
faster, and uses less memory. Other JavaScript processing tools such as
the TypeScript compiler already make this optimization. Here's what this
change looks like:

    ```js
    // Original code
    class Foo {
      #x() { return this.#x() }
      #y() { return this.#y() }
      #z() { return this.#z() }
    }

    // Old output (--supported:class-private-method=false)
    var _x, x_fn, _y, y_f